package com.roads.supervisor.service;

import com.roads.common.core.domain.entity.SysUser;
import com.roads.supervisor.domain.SupBoq;
import com.roads.supervisor.domain.SupMeterageDetailConstruction;
import com.roads.supervisor.domain.SupMeterageDetailDefect;
import com.roads.supervisor.domain.SupMeterageDetailOther;
import com.roads.supervisor.domain.SupMeterageDetailWinter;
import com.roads.supervisor.domain.SupMeterageMaster;

import java.util.List;

/**
 * 监理计量细表Service接口
 *
 * @author nhp
 * @date 2022-07-12
 */
public interface ISupMeterageDetailService {

    /**
     * 查询监理计量施工期列表
     *
     * @param model 施工期
     * @return 施工期集合
     */
    List<SupMeterageDetailConstruction> selectConstructionList(SupMeterageDetailConstruction model);

    /**
     * 清单是否计量
     *
     * @param supBoq 清单
     * @return 结果
     */
    boolean hasMeterage(SupBoq supBoq);

    /**
     * 监理计量-施工期批量新增
     *
     * @param masterId 监理计量主表ID
     * @param ids 施工期清单id集合
     * @return 结果
     */
    int saveDetailConstruction(Long masterId, String ids);

    /**
     * 根据ID获取施工期清单详情
     *
     * @param id 自增主键
     * @return 施工期清单详情
     */
    SupMeterageDetailConstruction getDetailConstructionById(Long id);

    /**
     * 修改监理计量-施工期详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailConstruction(SupMeterageDetailConstruction model);

    /**
     * 删除监理计量-施工期详情
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteDetailConstruction(Long[] ids);

    /**
     * 查询监理计量冬休期列表
     *
     * @param model 冬休期
     * @return 冬休期集合
     */
    List<SupMeterageDetailWinter> selectWinterList(SupMeterageDetailWinter model);

    /**
     * 监理计量-冬休期批量新增
     *
     * @param masterId 监理计量主表ID
     * @param ids 冬休期清单id集合
     * @return 结果
     */
    int saveDetailWinter(Long masterId, String ids);

    /**
     * 根据ID获取冬休期清单详情
     *
     * @param id 自增主键
     * @return 冬休期清单详情
     */
    SupMeterageDetailWinter getDetailWinterById(Long id);

    /**
     * 修改监理计量-冬休期详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailWinter(SupMeterageDetailWinter model);

    /**
     * 删除监理计量-冬休期详情
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteDetailWinter(Long[] ids);

    /**
     * 查询监理计量缺陷责任期列表
     *
     * @param model 缺陷责任期
     * @return 缺陷责任期集合
     */
    List<SupMeterageDetailDefect> selectDefectList(SupMeterageDetailDefect model);

    /**
     * 监理计量-缺陷责任期批量新增
     *
     * @param masterId 监理计量主表ID
     * @param ids 缺陷责任期清单id集合
     * @return 结果
     */
    int saveDetailDefect(Long masterId, String ids);

    /**
     * 根据ID获取缺陷责任期清单详情
     *
     * @param id 自增主键
     * @return 缺陷责任期清单详情
     */
    SupMeterageDetailDefect getDetailDefectById(Long id);

    /**
     * 修改监理计量-缺陷责任期详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailDefect(SupMeterageDetailDefect model);

    /**
     * 删除监理计量-缺陷责任期详情
     *
     * @param ids 主键集合
     * @return 结果
     */
    int deleteDetailDefect(Long[] ids);

    /**
     * 查询监理计量其他支付项目列表
     *
     * @param model 其他支付项目
     * @return 施工期集合
     */
    List<SupMeterageDetailOther> selectOtherList(SupMeterageDetailOther model);

    /**
     * 根据ID获取其他支付项目详情
     *
     * @param id 自增主键
     * @return 其他支付项目详情
     */
    SupMeterageDetailOther getDetailOtherById(Long id);

    /**
     * 修改监理计量-其他支付项目详情
     *
     * @param model 修改数据
     * @return 结果
     */
    int updateDetailOther(SupMeterageDetailOther model);

    /**
     * 同步其他支付项目固定值
     * @param masterId 主表主键
     * @return 结果
     */
    int syncDetailOtherItem(Long masterId);

    /**
     * 创建监理计量-其他支付项目固定值集合
     *
     * @param master 主表信息
     * @param user 用户
     * @return 固定值支付项目集合
     */
    List<SupMeterageDetailOther> createMeterageOtherList(SupMeterageMaster master, SysUser user);

}
